<?php

/*
 * Usuario SQL.
 * @Autor: Inicial.cl.
 */

class UsuarioSQL {

    //METODO PARA GRABAR USUARIO.
    public static $GRABAR_USUARIO =
            "INSERT INTO usuario
			(
				idEstado,
				idTipoUsuario,
				usuario,
				email,
				password,
				fechaRegistro,
				fechaNacimiento,
				sexo,
				rutaAvatar,
				idProfesion,
				idComuna
			)
		VALUES
			(
				'{#IDESTADO}',
				'{#IDTIPOUSUARIO}',
				'{#USUARIO}',
				'{#EMAIL}',
				'{#PASSWORD}',
				NOW(),
				'{#FECHANACIMIENTO}',
				'{#SEXO}',
				'{#RUTAAVATAR}',
				{#IDPROFESION},
				{#IDCOMUNA}
			);
		";
    public static $GRABAR_USUARIO_MIN =
            "INSERT INTO usuario
			(
				idEstado,
				idTipoUsuario,
				usuario,
				email,
				password,
				fechaRegistro,
				fechaNacimiento,
				sexo,
                                rutaAvatar
			)
		VALUES
			(
				'{#IDESTADO}',
				'{#IDTIPOUSUARIO}',
				'{#USUARIO}',
				'{#EMAIL}',
				'{#PASSWORD}',
				NOW(),
				'{#FECHANACIMIENTO}',
				'{#SEXO}',
                                '{#AVATAR}'
                        );
		";
    //METODO PARA EDITAR USUARIO.
    public static $EDITAR_USUARIO =
            "UPDATE usuario SET 
			idEstado = '{#IDESTADO}',
			idTipoUsuario = '{#IDTIPOUSUARIO}',
			usuario = '{#USUARIO}',
			email = '{#EMAIL}',
			password = '{#PASSWORD}',
			fechaRegistro = '{#FECHAREGISTRO}',
			fechaNacimiento = '{#FECHANACIMIENTO}',
			sexo = '{#SEXO}',
			rutaAvatar = '{#RUTAAVATAR}',
			idProfesion = {#IDPROFESION},
			idComuna = {#IDCOMUNA}
		WHERE
			id = {#ID}
		";
    //METODO PARA EDITAR PERFIL PROPIO USUARIO.
    public static $EDITAR_PERFIL_PROPIO =
            "UPDATE usuario SET 
			fechaNacimiento = '{#FECHANACIMIENTO}',
			sexo = '{#SEXO}',
			rutaAvatar = '{#RUTAAVATAR}',
			idProfesion = {#IDPROFESION},
			idComuna = {#IDCOMUNA}
		WHERE
			id = {#ID}
		";

    //METODO PARA LISTAR USUARIO.
    public static $LISTAR_USUARIO =
            "SELECT
			u.id,
			u.idEstado,
			u.idTipoUsuario,
			u.usuario,
			u.email,
			u.password,
			u.fechaRegistro,
			u.fechaNacimiento,
			u.sexo,
			u.rutaAvatar,
			u.idProfesion,
			u.idComuna,
                        IFNULL(e.nombre,'') as estado,
                        IFNULL(tu.nombre,'') as tipoUsuario,
                        IFNULL(es.destacada,0) as destacada,
                        IFNULL(es.certificada,0) as certificada,
                        IFNULL(v.ranking,0) as ranking
		FROM
			usuario as u
                        inner join tipo_usuario as tu on (u.idTipoUsuario = tu.id)
                        inner join estado as e on (u.idEstado = e.id)
                        left join escort as es on (u.id = es.idUsuario)
                        left join vwu_escort_ranking_top as v on (es.id = v.id)
		WHERE
			u.idEstado > 0
                AND     (-1 = {#IDTIPOUSUARIO} OR u.idTipoUsuario = {#IDTIPOUSUARIO})
                ORDER BY
                        u.id DESC
		";

    //METODO PARA OBTENER POR ID USUARIO.
    public static $OBTENER_USUARIO_POR_ID =
            "SELECT
			u.id,
			u.idEstado,
			u.idTipoUsuario,
			u.usuario,
			u.email,
			u.password,
			u.fechaRegistro,
			u.fechaNacimiento,
                        u.fechaLogout,
                        u.sexo,
			u.rutaAvatar,
			u.idProfesion,
			u.idComuna,
                        c.idRegion
		FROM
			usuario as u
                        left join comuna as c on (u.idComuna = c.id)
		WHERE
			u.id = {#ID}
		AND
			u.idEstado > 0
		";
    //METODO PARA ELIMINAR (CAMBIAR ESTADO A 0) USUARIO.
    public static $ELIMINAR_USUARIO =
            "UPDATE usuario SET
			idEstado = 0
		WHERE 
			id = {#ID}
		";
    public static $VALIDAR_LOGIN = "
            SELECT
                    id,
                    idEstado,
                    idTipoUsuario,
                    usuario,
                    email,
                    password,
                    fechaRegistro,
                    fechaNacimiento,
                    sexo,
                    rutaAvatar,
                    idProfesion,
                    idComuna,
                    fechaLogout
            FROM
                    usuario
            WHERE
                    ((email = '{#EMAIL}' and password = '{#PASSWORD}') OR (usuario = '{#USUARIO}' AND password = '{#PASSWORD}'))
                    AND (idEstado > 0)";
    public static $RECUPERAR_PASSWORD = "
            SELECT
                    id,
                    idEstado,
                    idTipoUsuario,
                    usuario,
                    email,
                    password,
                    fechaRegistro,
                    fechaNacimiento,
                    sexo,
                    rutaAvatar,
                    idProfesion,
                    idComuna,
                    fechaLogout
            FROM
                    usuario
            WHERE
                    email = '{#EMAIL}' 
            OR 
                    usuario = '{#USUARIO}'
            AND 
                    idEstado > 0";
    //METODO PARA CAMBIAR PASSWORD
    public static $CAMBIAR_PASSWORD =
            "UPDATE usuario SET 
			password = md5('{#PASSWORD}')
		WHERE
			id = {#ID}
		";
    //METODO PARA OBTENER POR ID USUARIO.
    public static $GET_USUARIO_PENDIENTE =
            "SELECT
			id,
			idEstado,
			idTipoUsuario,
			usuario,
			email,
			password,
			fechaRegistro,
			fechaNacimiento,
                        fechaLogout,
                        sexo,
			rutaAvatar,
			idProfesion,
			idComuna
		FROM
			usuario
		WHERE
			id = {#ID}
		AND
			idEstado > 0                
		";
    //METODO PARA VALIDAR USUARIO.
    public static $VALIDAR_USUARIO =
            "UPDATE usuario SET 
			idEstado = 1
		WHERE
			id = {#ID}
		";
    public static $VALIDAR_USUARIO_EMAIL_EXISTE = "
            SELECT
                    id,
                    idEstado,
                    idTipoUsuario,
                    usuario,
                    email,
                    password,
                    fechaRegistro,
                    fechaNacimiento,
                    sexo,
                    rutaAvatar,
                    idProfesion,
                    idComuna,
                    fechaLogout
            FROM
                    usuario
            WHERE
                    email = '{#EMAIL}' 
            OR 
                    usuario = '{#USUARIO}'
            AND 
                    idEstado > 0
                ";
    public static $CERRAR_SESSION = "update usuario set fechaLogout=now() where id={#ID}";

    public static $VALIDAR_LOGIN_ADMIN = "
            SELECT
                    id,
                    idEstado,
                    idTipoUsuario,
                    usuario,
                    email,
                    password,
                    fechaRegistro,
                    fechaNacimiento,
                    sexo,
                    rutaAvatar,
                    idProfesion,
                    idComuna,
                    fechaLogout
            FROM
                    usuario
            WHERE
                    ((email = '{#EMAIL}' and password = '{#PASSWORD}') OR (usuario = '{#USUARIO}' AND password = '{#PASSWORD}'))
                    AND (idEstado > 0)
                    AND idTipoUsuario = {#TIPO_USUARIO};
            ";

    //METODO PARA LISTAR USUARIO.
    public static $LISTAR_USUARIO_PAGO =
            "SELECT
                u.id,
                u.idEstado,
                u.idTipoUsuario,
                u.usuario,
                u.email,
                u.password,
                u.fechaRegistro,
                u.fechaNacimiento,
                u.sexo,
                u.rutaAvatar,
                u.idProfesion,
                u.idComuna,
                IFNULL(e.nombre,'') as estado,
                IFNULL(tu.nombre,'') as tipoUsuario,
                IFNULL(es.destacada,0) as destacada,
                IFNULL(es.certificada,0) as certificada,
                t.fechaPago as fechaUltimoPago,
                TIMESTAMPDIFF(MONTH,t.fechaPago,CURDATE()) as mesesAtraso,
                t.monto as montoUltimoPago
            FROM
                usuario as u
                inner join tipo_usuario as tu on (u.idTipoUsuario = tu.id)
                inner join estado as e on (u.idEstado = e.id)
                left join escort as es on (u.id = es.idUsuario)
                -- obtiene los ultimos pagos
                left join (
                        SELECT
                         p.idUsuario,
                         p.fechaPago,
                         p.monto
                        FROM
                         pago as p
                         inner join(
                            select
                             idUsuario,
                             MAX(fechaPago) as fechaPago
                            FROM
                             pago
                            GROUP BY
                              idUsuario
                        ) as t ON (p.idUsuario = t.idUsuario AND p.fechaPago = t.fechaPago)
                        WHERE
                          p.idEstado > 0
                ) AS t on (u.id = t.idUsuario)
            WHERE
                    u.idEstado > 0
            AND     (-1 = {#IDTIPOUSUARIO} OR u.idTipoUsuario = {#IDTIPOUSUARIO})
            ORDER BY
                t.fechaPago DESC;
            ";


}

?>